ফাংশনাল প্রোগ্রামিং ভাষা হিসেবে ক্লোজারে (Clojure) ফাংশন কম্পোজিশন এবং পার্শিয়াল অ্যাপ্লিকেশন খুবই গুরুত্বপূর্ণ এবং শক্তিশালী কনসেপ্ট, যা ফাংশনাল প্রোগ্রামিংকে আরও কার্যকর এবং সংক্ষিপ্ত করে তোলে। ফাংশন কম্পোজিশন এবং পার্শিয়াল অ্যাপ্লিকেশন ডেভেলপারদের ফাংশন তৈরি এবং পুনরায় ব্যবহারযোগ্যতা বাড়াতে সাহায্য করে।
ফাংশন কম্পোজিশন হলো দুটি বা ততোধিক ফাংশনকে একত্রিত করে একটি নতুন ফাংশন তৈরি করা। এতে একটি ফাংশনের আউটপুট অন্য একটি ফাংশনের ইনপুট হিসেবে ব্যবহৃত হয়। ক্লোজারে comp
ফাংশন ব্যবহার করে ফাংশন কম্পোজিশন করা যায়।
ধরা যাক, আমরা দুটি ফাংশন square
এবং increment
তৈরি করতে চাই, যেখানে একটি সংখ্যার বর্গফল বের করা হয় এবং এরপর সেই ফলাফলে ১ যোগ করা হয়।
(defn square [x]
(* x x))
(defn increment [x]
(+ x 1))
; ফাংশন কম্পোজিশনের মাধ্যমে নতুন ফাংশন তৈরি করা
(def composed-fn (comp increment square))
(composed-fn 4) ; আউটপুট: 17
এখানে, composed-fn
নামের নতুন ফাংশন তৈরি করা হয়েছে, যা প্রথমে square
ফাংশন চালায় এবং তারপর increment
ফাংশন চালায়। composed-fn
এ 4
পাস করলে প্রথমে বর্গফল 16
হয় এবং এরপর increment
ফাংশনে ১ যোগ করে 17
আউটপুট দেয়।
পার্শিয়াল অ্যাপ্লিকেশন হলো একটি ফাংশনের কিছু আর্গুমেন্ট ফিক্সড রেখে একটি নতুন ফাংশন তৈরি করা, যাতে পরবর্তীতে বাকি আর্গুমেন্ট দিয়ে ফাংশন চালানো যায়। ক্লোজারে partial
ফাংশন ব্যবহার করে পার্শিয়াল অ্যাপ্লিকেশন করা যায়।
ধরা যাক, আমাদের একটি ফাংশন আছে multiply
যা দুটি সংখ্যার গুণফল বের করে। আমরা এই ফাংশনের একটি আর্গুমেন্ট ফিক্সড রেখে নতুন একটি ফাংশন তৈরি করতে চাই।
(defn multiply [x y]
(* x y))
; পার্শিয়াল অ্যাপ্লিকেশন দিয়ে নতুন ফাংশন তৈরি
(def double (partial multiply 2))
(double 5) ; আউটপুট: 10
(double 10) ; আউটপুট: 20
এখানে partial
ফাংশন ব্যবহার করে multiply
ফাংশনের প্রথম আর্গুমেন্ট 2
ফিক্সড রাখা হয়েছে, ফলে নতুন ফাংশন double
তৈরি হয়েছে। এখন double
ফাংশন শুধু একটি আর্গুমেন্ট নেবে এবং এটিকে 2
এর সাথে গুণ করবে।
ফাংশন কম্পোজিশন এবং পার্শিয়াল অ্যাপ্লিকেশন একসাথে ব্যবহার করে শক্তিশালী ফাংশন তৈরি করা যায়।
ধরা যাক, আমাদের দুটি ফাংশন আছে - একটির কাজ সংখ্যাকে ১০ দিয়ে গুণ করা এবং অন্যটি সংখ্যার উপর ৫ যোগ করা। আমরা একটি পার্শিয়াল অ্যাপ্লিকেশন ও ফাংশন কম্পোজিশন ব্যবহার করে নতুন ফাংশন তৈরি করতে পারি।
(defn add [x y]
(+ x y))
(defn multiply [x y]
(* x y))
; ১০ দিয়ে গুণ করার জন্য পার্শিয়াল অ্যাপ্লিকেশন
(def multiply-by-10 (partial multiply 10))
; ৫ যোগ করার জন্য পার্শিয়াল অ্যাপ্লিকেশন
(def add-5 (partial add 5))
; ফাংশন কম্পোজিশন ব্যবহার করে নতুন ফাংশন তৈরি
(def process-fn (comp add-5 multiply-by-10))
(process-fn 3) ; আউটপুট: 35
এখানে, process-fn
ফাংশন প্রথমে multiply-by-10
চালায় এবং তারপর add-5
চালায়। ফলে (3 * 10) + 5 = 35
আউটপুট আসে।
কনসেপ্ট | বর্ণনা | ক্লোজারে ফাংশন |
---|---|---|
ফাংশন কম্পোজিশন | দুটি বা ততোধিক ফাংশনকে একত্রিত করে একটি নতুন ফাংশন তৈরি করা | comp |
পার্শিয়াল অ্যাপ্লিকেশন | ফাংশনের কিছু আর্গুমেন্ট ফিক্সড রেখে একটি নতুন ফাংশন তৈরি করা | partial |
ক্লোজারে ফাংশন কম্পোজিশন এবং পার্শিয়াল অ্যাপ্লিকেশন কোডকে সংক্ষিপ্ত, পুনরায় ব্যবহারযোগ্য এবং কার্যকরী করে তোলে। এগুলোর মাধ্যমে ডেভেলপাররা কম্পোজেবল ফাংশন তৈরি করতে পারেন, যা প্রোগ্রামের মডুলারিটি বাড়ায় এবং কোড মেইনটেনেন্স সহজ করে।
common.read_more